home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1996 September & October / Amiga-CD 1996 #9-10.iso / demos / storm-c / stormc / include / dos / notify.h < prev    next >
C/C++ Source or Header  |  1994-03-15  |  2KB  |  98 lines

  1. #ifndef DOS_NOTIFY_H
  2. #define DOS_NOTIFY_H
  3. /*
  4. **
  5. **    $VER: notify.h 36.8 (29.8.90)
  6. **    Includes Release 40.15
  7. **
  8. **    dos notification definitions
  9. **
  10. **    (C) Copyright 1989-1993 Commodore-Amiga, Inc.
  11. **        All Rights Reserved
  12. **
  13. */
  14.  
  15. #ifndef EXEC_TYPES_H
  16. #include "exec/types.h"
  17. #endif
  18.  
  19. #ifndef EXEC_PORTS_H
  20. #include "exec/ports.h"
  21. #endif
  22.  
  23. #ifndef EXEC_TASKS_H
  24. #include "exec/tasks.h"
  25. #endif
  26.  
  27.  
  28. /* use of Class and code is discouraged for the time being - we might want to
  29.    change things */
  30. /* --- NotifyMessage Class ------------------------------------------------ */
  31. #define NOTIFY_CLASS    0x40000000
  32.  
  33. /* --- NotifyMessage Codes ------------------------------------------------ */
  34. #define NOTIFY_CODE    0x1234
  35.  
  36.  
  37. /* Sent to the application if SEND_MESSAGE is specified.            */
  38.  
  39. struct NotifyMessage {
  40.     struct Message nm_ExecMessage;
  41.     ULONG  nm_Class;
  42.     UWORD  nm_Code;
  43.     struct NotifyRequest *nm_NReq;    /* don't modify the request! */
  44.     ULONG  nm_DoNotTouch;        /* like it says!  For use by handlers */
  45.     ULONG  nm_DoNotTouch2;        /* ditto */
  46. };
  47.  
  48. /* Do not modify or reuse the notifyrequest while active.            */
  49. /* note: the first LONG of nr_Data has the length transfered            */
  50.  
  51. struct NotifyRequest {
  52.     UBYTE *nr_Name;
  53.     UBYTE *nr_FullName;        /* set by dos - don't touch */
  54.     ULONG nr_UserData;        /* for applications use */
  55.     ULONG nr_Flags;
  56.  
  57.     union {
  58.  
  59.         struct {
  60.         struct MsgPort *nr_Port;    /* for SEND_MESSAGE */
  61.         } nr_Msg;
  62.  
  63.         struct {
  64.         struct Task *nr_Task;        /* for SEND_SIGNAL */
  65.         UBYTE nr_SignalNum;        /* for SEND_SIGNAL */
  66.         UBYTE nr_pad[3];
  67.         } nr_Signal;
  68.     } nr_stuff;
  69.  
  70.     ULONG nr_Reserved[4];        /* leave 0 for now */
  71.  
  72.     /* internal use by handlers */
  73.     ULONG nr_MsgCount;        /* # of outstanding msgs */
  74.     struct MsgPort *nr_Handler;    /* handler sent to (for EndNotify) */
  75. };
  76.  
  77. /* --- NotifyRequest Flags ------------------------------------------------ */
  78. #define NRF_SEND_MESSAGE    1
  79. #define NRF_SEND_SIGNAL        2
  80. #define NRF_WAIT_REPLY        8
  81. #define NRF_NOTIFY_INITIAL    16
  82.  
  83. /* do NOT set or remove NRF_MAGIC!  Only for use by handlers! */
  84. #define NRF_MAGIC    0x80000000
  85.  
  86. /* bit numbers */
  87. #define NRB_SEND_MESSAGE    0
  88. #define NRB_SEND_SIGNAL        1
  89. #define NRB_WAIT_REPLY        3
  90. #define NRB_NOTIFY_INITIAL    4
  91.  
  92. #define NRB_MAGIC        31
  93.  
  94. /* Flags reserved for private use by the handler: */
  95. #define NR_HANDLER_FLAGS    0xffff0000
  96.  
  97. #endif /* DOS_NOTIFY_H */
  98.